#ifndef CONTACTUSERLIST_H
#define CONTACTUSERLIST_H

#include "userdata.h"

#include <QListWidget>
#include <QEvent>
#include <QWheelEvent>

class ConUserItem;

class ContactUserList : public QListWidget
{
    Q_OBJECT
public:
    ContactUserList(QWidget *parent = nullptr);

    // 有新消息时，显示红点
    void showRedPoint(bool b_show = true);

protected:
    bool eventFilter(QObject *watched, QEvent *event) override;

private:
    void addContactUserList();

public slots:
    // 处理联系人条目被点击的信号
    void slot_item_clicked(QListWidgetItem *item);
    // 处理对端同意认证后通知的信号
    void slot_add_auth_firend(std::shared_ptr<AuthInfo> auth_info);
    // 处理己点击同意认证后界面刷新信号（申请列表、好友列表UI的刷新）
    void slot_auth_rsp(std::shared_ptr<AuthRsp> auth_rsp);

signals:
    // 加载联系人的信号
    void sig_loading_contact_user();
    // 切换为好友申请界面的信号
    void sig_switch_apply_friend_page();
    // 切换为好友信息界面的信号
    void sig_switch_friend_info_page(std::shared_ptr<UserInfo> user_info);

private:
    bool m_load_pending;
    ConUserItem* m_add_friend_item;
    QListWidgetItem * m_groupitem;
};

#endif // CONTACTUSERLIST_H
